//package com.lzh.mybatisdemo.utils;
//
//import com.rkinf.framework.file.entity.FileInfo;
//import com.rkinf.framework.web.exception.BusinessException;
//import org.springframework.util.CollectionUtils;
//import org.springframework.util.ObjectUtils;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * 文件工具
// *
// * @author ACui
// * @time 2022/2/16 15:11
// */
//public class FileUtil {
//    /**
//     * 从实体中获取fileNames
//     * @param entity
//     * @param <T>
//     * @return
//     */
//    public static  <T> List<String> getFilenames(T entity) {
//        List<String> filenames = new ArrayList<>();
//        List<Field> declaredFields = getAllField(entity);
//        for (Field field : declaredFields) {
////            String typeName = field.getGenericType().getTypeName();
////            System.out.println(typeName);
//            if (field.getGenericType().getTypeName().equals("com.rkinf.framework.file.entity.FileInfo")) {
//                field.setAccessible(true);
//                try {
//                    Object o = field.get(entity);
//                    if (!ObjectUtils.isEmpty(o) && o instanceof FileInfo && !ObjectUtils.isEmpty(((FileInfo) o).getFilename())) {
//                        String filename = ((FileInfo) o).getFilename();
//                        filenames.add(filename);
//                    }
//                } catch (IllegalAccessException e) {
//                    e.printStackTrace();
//                    throw new BusinessException("保存文件错误，请重试");
//                }
//            }
//            if (field.getGenericType().getTypeName().equals("java.util.List<com.rkinf.framework.file.entity.FileInfo>")) {
//                field.setAccessible(true);
//                try {
//                    Object o = field.get(entity);
//                    if (!ObjectUtils.isEmpty(o) && o instanceof List<?>) {
//                        List<?> list = (List<?>) o;
//                        if (!CollectionUtils.isEmpty(list)) {
//                            for (Object o1 : list) {
//                                if (o1 instanceof FileInfo) {
//                                    filenames.add(((FileInfo) o1).getFilename());
//                                }
//                            }
//                        }
//                    }
//                } catch (IllegalAccessException e) {
//                    e.printStackTrace();
//                    throw new BusinessException("保存文件错误，请重试");
//                }
//            }
//        }
//        return filenames;
//    }
//
//    private static <T> List<Field> getAllField(T entity){
//        Class<?> clazz = entity.getClass();
//        List<Field> fields = new ArrayList<>();
//        while (clazz!=null){
//            fields.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
//            clazz = clazz.getSuperclass();
//        }
//        return fields;
//    }
//}
